from day20.models.models_stu import Stu
from day20.models.models_score import Score
from day20.models.models_emp import Emp
from day20.database.database import get_db
from sqlalchemy.orm import Session
from day20.database.database import Base, engine
from day20.crud.crud_statistical import *
from fastapi import Depends, FastAPI, APIRouter
import uvicorn

# Base.metadata.create_all(bind=engine)

statistical_app = APIRouter()


# 1.查询所有超过30岁的学员的信息接口
@statistical_app.get("/stu/get/age", summary="超过30岁学生信息统计")
async def get_stu_age_infos(db:Session=Depends(get_db)):
    return get_stu_all_age_above_30(db)

# 2.统计每个班级男⽣⼥⽣的⼈数
@statistical_app.get("/stu/gender/count", summary="每个班男女人数统计")
async def get_gender_count(db:Session=Depends(get_db)):
    return get_stu_all_gender_count(db)

#3. 查询每次考试成绩都在80分以上的学⽣的编号，姓名和成绩
@statistical_app.get("/stu/get/score/above", summary="每次考试80分以上学生信息统计")
async def get_stu_score_above(db:Session=Depends(get_db)):
    return get_stu_all_scores_above_80(db)

#4. 查询有两次以上不及格的学⽣的姓名，班级和不及格成绩
@statistical_app.get("/stu/get/score/behind", summary="两次以上不及格学生信息统计")
async def get_stu_score_behind(db:Session=Depends(get_db)):
    return get_stu_all_scores_fail_2(db)

# 5.统计每次考试每个班级的平均分，按照从⾼到低排序
@statistical_app.get("/class/get/score/avg", summary="每次考试每个班均分(降序)统计")
async def get_class_score_avg(db:Session=Depends(get_db)):
    return get_class_avg_score_rank(db)

# 6.统计就业薪资最⾼的前五名学⽣的姓名，班级和就业时间，就业公司
@statistical_app.get("/stu/get/sal/max", summary="就业薪资最⾼的前五名学⽣信息统计")
async def get_stu_sal_max(db:Session=Depends(get_db)):
    return get_stu_max_sal_5(db)

# 7.统计每个学⽣的就业时⻓（offer下发时间-就业开放时间）
@statistical_app.get("/stu/get/offer/issue", summary="学生就业时长统计")
async def get_stu_offer_issue(db:Session=Depends(get_db)):
    return get_all_stu_offer_issue_time(db)

# 8.统计每个班级的平均就业时⻓（只统计进⼊就业阶段的学⽣，也就是有就业开放时间）
@statistical_app.get("/class/get/offer/issue", summary="班级平均就业时长统计")
async def get_class_offer_issue(db:Session=Depends(get_db)):
    return get_class_avg_offer_issue_time(db)


# if __name__ == '__main__':
#     uvicorn.run("statistical_analysis:statistical_app", host="localhost", port=8002, reload=True)